/**
 * @author hejun
 * @description 定义store配置
 */
import Vue from 'vue'
import Vuex from 'vuex'
import persistedState from 'vuex-persistedstate'
//引入vuex
Vue.use(Vuex)
//注册插件

//实例化
const store = new Vuex.Store({

    // 添加vuex数据持久化库插件
    plugins: [
        persistedState({
            // 指定存储数据的位置
            storage: window.sessionStorage
        })
    ],

    modules: {
        //在vuex中进行模块化管理
        xiaojun: {
            namespaced: true, //定义一个数据管理空间
            state: {
                //定义托管的是数据
                token: ""

            },
            getters: {
                //向外暴露一个getter方法, 外部可以调用这个方法获取state中的数据
                getToken(_state) {
                    return _state.token
                    //this.$store.getters['aishang/Token']
                },
            },
            actions: {
                //异步执行动作
                tokenAct(_store, _data) {
                    Promise.resolve().then(() => {
                        // 为什么这里不需要加模块名字
                        _store.commit('setToken', 'TOKEN - ' + _data)
                    })
                    //this.$store.dispatch('aishang/tokenAct', 改变的值)
                }

            },
            mutations: {
                //状态扭转方法定义, setter方法
                setToken(_state, _token) {
                    _state.token = _token
                    // this.$store.commit("aishang/tokenAct", 改变的值);
                },
                
            }
        }
    }
})

export default store